package com.luxsoft.siipap.em.replica.importadores.inventarios;

import java.io.IOException;
import java.util.Date;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

import com.luxsoft.siipap.em.replica.importadores.dbf.DBFRowHandler;
import com.luxsoft.siipap.em.replica.importadores.dbf.DBFSupport;
import com.luxsoft.siipap.inventarios.model.InventarioAnual;

import com.luxsoft.siipap.model.Direccion;
import com.luxsoft.siipap.model.Sucursal;
import com.luxsoft.siipap.model.core.Cliente;
import com.luxsoft.siipap.model.core.Contacto;
import com.luxsoft.siipap.model.core.Producto;
import com.luxsoft.siipap.service.ServiceLocator2;
import com.luxsoft.siipap.util.DBUtils;
import com.luxsoft.siipap.util.ValidationUtils;

/**
 * Importa las existencias desde ARSALD01.ACU
 * 
 * Temporalmente util presentar las existencias de siipap dbf
 * 
 * @author Ruben Cancino Ramos
 *
 */
public class ImportadorDeClientesDBF implements DBFRowHandler{
	
	
	private Sucursal sucursal;
	
	public void execute() throws IOException{
		
		DBFSupport support=new DBFSupport();		
		String file="c:\\pruebas\\saldo\\CLIENTES.DBF";
		support.execute(file,this, true);
		sucursal=ServiceLocator2.getConfiguracion().getSucursal();
	}

	public void processRow(Map<String, Object> rs) throws Exception {
			try{
				String CLICLAVE=(String)rs.get("CLICLAVE");		
				String CLINOMBRE=(String)rs.get("CLINOMBRE");
				
				String CLICALLE=(String)rs.get("CLICALLE");
				String CLICOLON=(String)rs.get("CLICOLON");
				String CLIDELEG=(String)rs.get("CLIDELEG");
				String CLIPOSTAL=(String)rs.get("CLIPOSTAL");
				String CLITEL1=(String)rs.get("CLITEL1");
				String CLIFAX=(String)rs.get("CLIFAX");
				String CLIRFC=(String)rs.get("CLIRFC");
				String CLICUENTA=(String)rs.get("CLICUENTA");
				String CLIOBSCLAS=(String)rs.get("CLIOBSCLAS");
				String CLIGERGRAL=(String)rs.get("CLIGERGRAL");
				String CLIGERCOMP=(String)rs.get("CLIGERCOMP");
				
				// Propiedades del DBF sin usuar
				String CLICLAVORI=(String)rs.get("CLICLAVORI");
				Number CLIREVISIO=(Number)rs.get("CLIREVISIO");
				Number CLIPAGO=(Number)rs.get("CLIPAGO");
				Number CLICOBRADO=(Number)rs.get("CLICOBRADO");
				Number CLIAGENTE=(Number)rs.get("CLIAGENTE");
				Number CLILIMITE=(Number)rs.get("CLILIMITE");
				Date CLIFECREAL=(Date)rs.get("CLIFECREAL");
				Date CLIFECSIAL=(Date)rs.get("CLIFECSIAL");
				Date CLISUSPEN=(Date)rs.get("CLISUSPEN");
				String CLICOMSUS=(String)rs.get("CLICOMSUS");
				String CLIOBSGRAL=(String)rs.get("CLIOBSGRAL");		
				Number CLICLASIFI=(Number)rs.get("CLICLASIFI");
				Date CLIFECLASI=(Date)rs.get("CLIFECLASI");		
				String CLICEDULA=(String)rs.get("CLICEDULA");
				Number CLIPLAZO=(Number)rs.get("CLIPLAZO");
				String CLITIPVTO=(String)rs.get("CLITIPVTO");
				String CLIPAGARE=(String)rs.get("CLIPAGARE");
				String CLIOPEDEPU=(String)rs.get("CLIOPEDEPU");
				Date CLIFECDEPU=(Date)rs.get("CLIFECDEPU");
				Number CLIBACOCO=(Number)rs.get("CLIBACOCO");
				Number CLIBACOVE=(Number)rs.get("CLIBACOVE");
				String CLIESLIDER=(String)rs.get("CLIESLIDER");
				String CLILIDER=(String)rs.get("CLILIDER");
				String CLIESTADO=(String)rs.get("CLIESTADO");
				String CLICOMEDO=(String)rs.get("CLICOMEDO");
				String CLICOTIZA=(String)rs.get("CLICOTIZA");
				String CLICOMCOT=(String)rs.get("CLICOMCOT");
				String CLIPEDIDO=(String)rs.get("CLIPEDIDO");
				String CLICOMPED=(String)rs.get("CLICOMPED");
				String CLIFACTUR=(String)rs.get("CLIFACTUR");
				
				String CLICOMFAC=(String)rs.get("CLICOMFAC");
				Number CLIPORCDES=(Number)rs.get("CLIPORCDES");
				Number CLIPORCDE2=(Number)rs.get("CLIPORCDE2");
				String CLITIPO=(String)rs.get("CLITIPO");
				String CLICTRLGRA=(String)rs.get("CLICTRLGRA");
				String CLIFORPAGO=(String)rs.get("CLIFORPAGO");
				String CLIMOIMPNI=(String)rs.get("CLIMOIMPNI");
				Number CLIABOGADO=(Number)rs.get("CLIABOGADO");
				Date CLIFEASIAB=(Date)rs.get("CLIFEASIAB");
				Number CLIOPERADO=(Number)rs.get("CLIOPERADO");
				Number CLIUSUAR=(Number)rs.get("CLIUSUAR");
				Number CLIBACOVC=(Number)rs.get("CLIBACOVC");
				Date CLIFATENCL=(Date)rs.get("CLIFATENCL");
				Date CLIFATENMO=(Date)rs.get("CLIFATENMO");
				String CLIAATENCL=(String)rs.get("CLIAATENCL");
				String CLIAATENMO=(String)rs.get("CLIAATENMO");
				String CLIEMAIL=(String)rs.get("CLIEMAIL");
				String CLITELANT=(String)rs.get("CLITELANT");
				String CLIFAXANT=(String)rs.get("CLIFAXANT");
				String CLIGIROEMP=(String)rs.get("CLIGIROEMP");
				String CLIMANUAL=(String)rs.get("CLIMANUAL");
				String CLILIPRCRE=(String)rs.get("CLILIPRCRE");
				Date CLIALPRCRE=(Date)rs.get("CLIALPRCRE");
				String CLILIPRCON=(String)rs.get("CLILIPRCON");
				Date CLIALPRCON=(Date)rs.get("CLIALPRCON");
				String CLIEQUIORG=(String)rs.get("CLIEQUIORG");
				String CLIHORAREG=(String)rs.get("CLIHORAREG");
				String CLIACCES=(String)rs.get("CLIACCES");
				String CLIVERSION=(String)rs.get("CLIVERSION");
				
				Cliente c=new Cliente();
				c.setClave(CLICLAVE);
				c.setNombre(CLINOMBRE);
				c.setRfc(CLIRFC);
				c.setCuentaContable(CLICUENTA);
				
				
				Direccion d=new Direccion();
				d.setCalle(CLICALLE);
				d.setCiudad("");
				d.setColonia(CLICOLON);
				d.setCp(CLIPOSTAL);
				d.setEstado(CLIESTADO);
				d.setMunicipio(CLIDELEG);
				d.setNumero("");
				
				if(ValidationUtils.isValid(d))		
					c.setDireccionFiscal(d);
				else
					System.out.println("Errores en la direccion del cliente");
				c.agregarTelefono("Tel 1", CLITEL1);
				c.agregarTelefono("Fax 1", CLIFAX);
				c.setEmail(CLIEMAIL);
				if(!StringUtils.isBlank(CLIGERGRAL)){
					Contacto con=new Contacto(CLIGERGRAL,"Gerente general");
					c.agregarContacto(con);
				}
				if(!StringUtils.isBlank(CLIGERCOMP)){
					Contacto con=new Contacto(CLIGERCOMP,"Gerente compras");
					c.agregarContacto(con);
				}
				if(!StringUtils.isBlank(CLIOBSCLAS))
					c.agregarComentario("Comentario 1", CLIOBSCLAS);
				c=ServiceLocator2.getClienteManager().save(c);
				System.out.println("Cliente importado: "+c);
			}catch (Exception e) {
				e.printStackTrace();
			}
	}
	
	
	public static void main(String[] args) throws IOException {
		DBUtils.whereWeAre();
		new ImportadorDeClientesDBF().execute();
	}

}
